package rta.util
{
	import flash.events.Event;
	import flash.media.ID3Info;
	import flash.utils.setTimeout;
	
	import mx.collections.ArrayCollection;
	import mx.managers.SystemManager;
	
	import rta.datos.to.ImagenSecuencia;
	import rta.datos.to.Sonido;

	public class ListaReproduccion
	{
		private var total:int;
		private var actual:int;
		private var _lista:ArrayCollection;
		private var cancionActual:Mp3;
		private var callbackFin:Function;
		
		public function ListaReproduccion(_listaReproduccion:ArrayCollection=null, _callbackFin:Function=null){
			if(_listaReproduccion){
				this._lista = _listaReproduccion;
				this.total = _lista.length;
				this.actual = -1;
				this.callbackFin = _callbackFin;
			}
		}
		
		public function load(_listaReproduccion:ArrayCollection, _callbackFin:Function):void
		{
			if(_listaReproduccion){
				this._lista = _listaReproduccion;
				this.total = _lista.length;
				this.actual = -1;
				this.callbackFin = _callbackFin;
			}
		}
		
		public function play():void{
			initReproduction();
		}
		
		private function initReproduction(event:Event=null):void{
			actual++;
			
			if(actual < total){
				var duration:Number = 3000;
				var imagenSecuencia:ImagenSecuencia = _lista.getItemAt(actual) as ImagenSecuencia;
				var sonido:Sonido = imagenSecuencia.sonido;
				cancionActual = new Mp3(sonido.rutaSonido);
				
				while (cancionActual.bytesLoaded < cancionActual.bytesTotal){
					true;
				}
				
				if(cancionActual && cancionActual.length > 0)
					duration = (cancionActual.bytesTotal / (cancionActual.bytesLoaded / cancionActual.length));

				setTimeout(initReproduction, 3000);
				cancionActual.reproducir();
				
				if(imagenSecuencia.hasOwnProperty("repeticiones"))
					imagenSecuencia.repeticiones++;
				else
					imagenSecuencia.repeticiones = 1;
			}
			else{
				if(this.callbackFin != null)
					callbackFin();	
			}
		}
		
		public function stop():void{
			if(cancionActual)
				cancionActual.parar();
		}
	}
}